abstract class $RO_BAG{E} < $CONTAINER{E}, $STR |
---|
**** | A Bag contains objects in no specified order. A Bag can contain two equal objects. |
$STR | $CONTAINER{_} | $ELT{_} | $ELT |
$BAG{_} | BAG{_} | H_BAG{_} |
count(e:E): INT; |
---|
**** | Returns the number of occurences of 'e' in the bag. |
equals(b: $RO_BAG{E}): BOOL; |
---|
**** | Return true if self and "b" have the same elements in the same quantities |
intersection(b: $RO_BAG{E}):$BAG{E}; |
---|
**** | result.count(e) = minimum_of(self.count(e),b.count(e)) |
is_subset(b: $RO_BAG{E}): BOOL; |
---|
n_unique: INT; |
---|
**** | Returns the numver of different(!) elements in the bag. |
union(b: $RO_BAG{E}): $BAG{E}; |
---|
**** | The union contains the elements of "self" and "b". result.count(e) = self.count(e) + b.count(e) Is this a good definition? Is not symmetric with intersection STL uses maximum rather than arithmetic sum |
unique!: E; |
---|
**** | Yields all element from the bag, but every element will be yielded not more than once. |